package com.itheima.homework.Test08;

import java.util.ArrayList;
import java.util.Scanner;


/*
 *数据有实体类的对象进行存储,对数据的操作就又这个类进行操作,符合封层思想
 *
 * */
public class StudentOperator {
    private ArrayList<Student> allStudent = new ArrayList<>();
    private Scanner sc = new Scanner(System.in);

    public void start() {
        while (true) {
            //掌握集合常见的API的使用以及集合的遍历
            System.out.println("=========欢迎来到学生系统==========");
            System.out.println("----请输入你要操作的指令---");
            System.out.println("1:代表添加学生");
            System.out.println("2:展示所有学生的信息");
            System.out.println("3:获取学生的个数");
            System.out.println("4:获取第几个学生的信息");
            System.out.println("5:替换某个学生为另外一个学生");
            System.out.println("6:获取出孙姓的学院信息");
            System.out.println("7:获取身高在1.70以上的学员信息");
            System.out.println("8:删除第几个学生");
            System.out.println("9:退出系统");


            //获取用户输入的指令
            int command = sc.nextInt();
            //进行switch选择
            switch (command) {
                case 1:
                    System.out.println("======添加学生=========");
                    //添加学生
                    addStudent();
                    break;
                case 2:
                    System.out.println("=======展示所有学生信息========");
                    //遍历集合获取所有对象的属性值
                    showAllStudent();
                    break;
                case 3:
                    System.out.println("======学生个数如下=========");
                    //获取学生的个数
                    getStudentsize();
                    break;
                case 4:
                    System.out.println("======查询结果如下=========");
                    //获取第几个学生
                    getStudentMessage();
                    break;
                case 5:
                    System.out.println(("======替换掉某个学生成另外一个学生========="));
                    //替换掉某个学生成另外一个学生
                    replaceStudent();
                    break;
                case 6:
                    //获取身高在1.70以上的学院信息
                    System.out.println(("======获取身高在1.70以上的学院信息========="));

                    getHeightStudent();
                    break;
                case 7:
                    System.out.println("=================获取姓孙的学生=================");
                    //获取姓孙的学生
                    getSunStudent();
                    break;
                case 8:
                    System.out.println("=================删除学生=================");
                    //删除
                    removeStudent();
                    break;
                case 9:
                    //退出系统
                    System.out.println("退出成功");
                    return;
                default:
                    System.out.println("没有这个指令");

            }
        }
    }



    //获取姓孙的学生
    public void getSunStudent() {
    //遍历集合获取所有学生对象
        for (int i = 0; i < allStudent.size(); i++) {
            Student student = allStudent.get(i);
            if (student.getName().startsWith("孙")){
                System.out.println(student.getId() + "\t" + student.getName() + "\t" + student.getHeight());
            }
        }
    }

    public void getHeightStudent() {
        //遍历集合,获取数据
        for (int i = 0; i < allStudent.size(); i++) {
            Student student = allStudent.get(i);
            if (student.getHeight() > 1.70){
                System.out.println(student.getId() + "\t" + student.getName() + "\t" + student.getHeight());

            }
        }
    }

    public void replaceStudent() {
        System.out.println("将第一位学生替换成");
        Student student = new Student();
        System.out.println("请输入替换后学生的信息");
        System.out.println("请输入学生的学号");
        String id = sc.next();
        student.setId(id);
        System.out.println("请输入学生的名字");
        String name = sc.next();
        student.setName(name);
        System.out.println("请输入学生的身高");
        double height = sc.nextDouble();
        student.setHeight(height);
        allStudent.set(0,student);
    }

    //移除学生
    public void removeStudent() {
    //提示用户输入要移除的学生位置
        System.out.println("请输入要移除学生的位置");
        allStudent.remove(sc.nextInt()+1);

    }

    public void getStudentMessage() {
        //提示用户输入在查询学生的id
        System.out.println("请输入要查询学生的id");
        String id = sc.next();
        //根据管理员输入的id进行查询
        //遍历集合获取所有学生对象
        for (int i = 0; i < allStudent.size(); i++) {
            Student student = allStudent.get(i);
            if (student.getId() == id){
                System.out.println(student.getId() + "\t" + student.getName() + "\t" + student.getHeight());
            }
        }

    }

    //展示所有学生的信息
    public void showAllStudent() {
        //遍历集合
        System.out.println("======学生信息如下=========");
        for (int i = 0; i < allStudent.size(); i++) {
            Student student = allStudent.get(i);
            System.out.println(student.getId() + "\t" + student.getName() + "\t" + student.getHeight());
        }

    }

    public void getStudentsize() {
        System.out.println("======学生个数如下=========");
        //直接打印集的大小
        System.out.println("学生的个数是:" + allStudent.size());
    }

    private void addStudent() {
        //创建学生对象的数据结构
        Student student = new Student();
        //提示用户输入学生对象的数据,进行封装
        System.out.println("请输入学生的学号");
        String id = sc.next();
        student.setId(id);
        System.out.println("请输入学生的名字");
        String name = sc.next();
        student.setName(name);
        System.out.println("请输入学生的身高");
        double height = sc.nextDouble();
        student.setHeight(height);

        //将创建好的学生对象存储的集合中去
        allStudent.add(student);
    }
}
